// app.js
import { get } from "./api/request";
import authManager from "./utils/authManager";

App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 检查现有登录状态
    const userInfo = wx.getStorageSync('userInfo') || null
    this.globalData.userInfo = userInfo

    // 如果没有登录信息或登录信息过期，重新登录
    this.checkLoginStatus();
    //进行登录
    this.login();

    // 全局暴露认证管理器
    this.globalData.authManager = authManager;
  },

  // 检查登录状态
  checkLoginStatus() {
    const userInfo = wx.getStorageSync('userInfo') || null
    if (!userInfo || !userInfo.token) {
      this.login()
    } else {
      // 可以在这里添加token有效性检查
      // console.log('已登录，用户信息:', userInfo)
    }
  },

  // 登录
  login() {
    wx.login({
      success: res => {
        if (res.code) {
          const code = res.code;
          // console.log('微信登录code:', code);

          // 显示加载中
          // wx.showLoading({
          //   title: '登录中...',
          // })

          get('/user/login', { code: code }).then(res => {
            // console.log('获取Token成功', res);
            wx.setStorageSync('token', res.data.token)
            wx.hideLoading()

            if (res.code === 200) {
              const data = res.data;
              // console.log('app.js登录成功:', data);

              // 保存用户信息
              wx.setStorageSync('userInfo', data)
              this.globalData.userInfo = data

              // 提示登录成功
              // wx.showToast({
              //   title: '登录成功',
              //   icon: 'success',
              //   duration: 1500
              // });
            } else {
              // console.error('登录接口返回错误:', res);
              wx.showToast({
                title: res.msg || '登录失败',
                icon: 'none',
                duration: 2000
              })
            }
          }).catch(err => {
            wx.hideLoading()
            // console.error('登录请求错误:', err);
            wx.showToast({
              title: '网络错误，请稍后重试',
              icon: 'none',
              duration: 2000
            })
          })
        } else {
          // console.error('获取微信登录code失败', res);
          wx.showToast({
            title: '登录失败，请重试',
            icon: 'none',
            duration: 2000
          })
        }
      }
    })
  },

  // 显示登录窗口
  showLoginPopup() {
    return this.globalData.authManager.showLoginPopup();
  },

  globalData: {
    userInfo: null,
    authManager: null
  }
})
